table of contents
strcpy(3) | 2007-10-27-16:31 | strcpy(3) |
НАЗВА¶
strcpy, strncpy - копіює рядок
ВИКОРИСТАННЯ¶
#іnclude <string.h>
char *strcpy(char *dest, const char *src);
char *strncpy(char *dest, const char *src, size_t n);
ОПИС¶
Функція strcpy() копіює рядок, на який вказує src (включаючи кінцевий символ '\0'), у масив, на який вказує dest. Рядки не можуть перекриватися і рядок що утвориться, на який вказує dest, повинен мати досить місця для копії.
Функція strncpy() працює аналогічно, за винятком того копіюється не більше перших n байтів рядка src. Таким чином, якщо в n байтах рядка src немає нульового байта, то отриманий рядок не буде закінчуватися символом ' '.
Якщо довжина src менша за n, то зайве місце в dest заповниться нулями.
ПРИКЛАДИ¶
Наступне надасть charray значення "abc\0\0\0":
(void)strncpy(charray, "abc", 6);
(void)strncpy(charray, "abcdef", 6);
char buf[BUFSIZE];
(void)strncpy(buf, input, sizeof(buf) - 1);
buf[sizeof(buf) - 1] = '\0';
(void)strlcpy(buf, input, sizeof(buf));
ПОВЕРНЕНІ ЗНАЧЕННЯ¶
Функції strcpy() і strncpy() повертають покажчик на рядок dest, отриманий в результаті.
ВАДИ¶
Якщо в новоствореному рядку недостатньо місця для операції strcpy() (це буває, якщо недосвідчений або лінивий програміст не перевірив розміру перед копіюванням), то може статися все що завгодно. Переповнення рядків сталої довжини є улюбленою технікою крекерів.
ВІДПОВІДНІСТЬ СТАНДАРТАМ¶
SVID 3, POSIX, BSD 4.3, ISO 9899
ДИВІТЬСЯ ТАКОЖ¶
bcopy(3), memccpy(3), memcpy(3), memmove(3), wcscpy(3), wcsncpy(3)
---- Переклав українською Віталій Цибуляк <vi@uatech.atspace.com>
2007-10-27-16:31 | © 2005-2007 DLOU, GNU FDL |